10 HOME
20 PRINT CHR$(4);"PR#3"
22 HOME
23 DIM B(20,80)
24 DIM C(1600)

26 X1=10:Y1=42:X9=10:Y9=40:V8=10:V9=38:BB=0:LL=0:O1=0:C6=0:G1=0:MA=0:I9=1:CC=0:AM=1

27 FOR I=1 TO 8:M(I)=I:NEXT I

30 ONERR GOTO 31

31 INVERSE:VTAB 1:HTAB 30:PRINT"MOUSETRAP TOOL":VTAB 23:HTAB 1:PRINT"                                                                               ":VTAB 23:HTAB 1:INPUT"INPUT A NUMBER BETWEEN 1 TO 999 : ";RDS:NORMAL
32 IF RDS<1 OR RDS>999 THEN 31


33 ONERR GOTO 34

34 HOME:INVERSE:VTAB 23:HTAB 1:PRINT" PLEASE INSERT A DATA DISK IN SLOT 6 DRIVE 2,THEN PRESS <SPC> TO BE CONTINUE. ":VTAB 23:HTAB 79:GET G$:VTAB 23:HTAB 79:PRINT G$:NORMAL

35 IF G$<>" " THEN 34

36 NORMAL:D2=1:GOSUB 15800

39 NORMAL:HOME:ONERR GOTO 22200

44 VTAB 10:HTAB 40:PRINT " "
45 VTAB 10:HTAB 40:PRINT "M"
50 INVERSE:VTAB 10:HTAB 42:PRINT "$":NORMAL
52 VTAB 20:HTAB 6:PRINT"Y":VTAB 20:HTAB 10:PRINT"I":VTAB 20:HTAB 15:PRINT"R - RUN":VTAB 20:HTAB 25:PRINT"S - SAVE MAZE":VTAB 20:HTAB 66:PRINT"DOLLAR :    0"
54 VTAB 21 :HTAB 5:PRINT"G H":VTAB 21:HTAB 9:PRINT"J K":VTAB 21:HTAB 25:PRINT"L - LOAD MAZE":VTAB 21:HTAB 42:PRINT"X - CATALOG":VTAB 21:HTAB 55:PRINT"        ":VTAB 21:HTAB 66:PRINT"  STEP :    0"
56 VTAB 22 :HTAB 6:PRINT"B":VTAB 22:HTAB 10:PRINT"M":VTAB 22:HTAB 15:PRINT"Q - QUIT":VTAB 22:HTAB 25:PRINT"C - CLEAR SCN":VTAB 22:HTAB 42:PRINT"T - TRAP":VTAB 22:HTAB 66:PRINT"RESTEP :    0"

58 INVERSE:VTAB 23:HTAB 1:PRINT"                                                                               ":NORMAL

59 GOSUB 1200

60 NO=0:R1=0

61 INVERSE:VTAB 23:HTAB 50:PRINT"COMMON MODE     ":NORMAL

62 IF V8=10 AND V9=38 AND G1=0 THEN 64

63 IF G1>0 THEN INVERSE:VTAB 23:HTAB 50:PRINT"TARGET MODE     ":NORMAL:VTAB V8:HTAB V9:PRINT"T"


64 IF MA=1 THEN NORMAL:VTAB 23:HTAB 45:PRINT"SET"
65 IF MA=0 THEN NORMAL:VTAB 23:HTAB 45:PRINT"RND"

66 VTAB X9:HTAB Y9:PRINT"M":INVERSE:VTAB X1:HTAB Y1:PRINT"$":VTAB 23:HTAB 1:PRINT"COMMAND :                                   ":VTAB 23:HTAB 15:PRINT T$:VTAB 23:HTAB 11:GET A$:GOSUB 60000:VTAB 23:HTAB 11:PRINT A$:NORMAL

72 IF A$="Q" THEN 9000

74 IF A$=CHR$(25) THEN X2=X1-1:Y2=Y1:GOSUB 1000:GOSUB 29000:X1=X2:Y1=Y2
75 IF A$=CHR$(7) THEN X2=X1:Y2=Y1-1:GOSUB 1000:GOSUB 29000:X1=X2:Y1=Y2
76 IF A$=CHR$(8) THEN X2=X1:Y2=Y1+1:GOSUB 1000:GOSUB 29000:X1=X2:Y1=Y2
77 IF A$=CHR$(2) THEN X2=X1+1:Y2=Y1:GOSUB 1000:GOSUB 29000:X1=X2:Y1=Y2

78 IF A$="I" THEN X2=X1-1:Y2=Y1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT"$":GOSUB 1100:B(X1,Y1)=1:GOSUB 29500:X1=X2:Y1=Y2
80 IF A$="J" THEN X2=X1:Y2=Y1-1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT"$":GOSUB 1100:B(X1,Y1)=1:GOSUB 29500:X1=X2:Y1=Y2
90 IF A$="K" THEN X2=X1:Y2=Y1+1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT"$":GOSUB 1100:B(X1,Y1)=1:GOSUB 29500:X1=X2:Y1=Y2
95 IF A$="M" THEN X2=X1+1:Y2=Y1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT"$":GOSUB 1100:B(X1,Y1)=1:GOSUB 29500:X1=X2:Y1=Y2

100 IF A$="Y" THEN X2=X1-1:Y2=Y1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT" ":GOSUB 1150:B(X1,Y1)=0:GOSUB 29500:X1=X2:Y1=Y2
110 IF A$="G" THEN X2=X1:Y2=Y1-1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT" ":GOSUB 1150:B(X1,Y1)=0:GOSUB 29500:X1=X2:Y1=Y2
120 IF A$="H" THEN X2=X1:Y2=Y1+1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT" ":GOSUB 1150:B(X1,Y1)=0:GOSUB 29500:X1=X2:Y1=Y2
130 IF A$="B" THEN X2=X1+1:Y2=Y1:GOSUB 1000:INVERSE:VTAB X2:HTAB Y2:PRINT"$":GOSUB 50000:NORMAL:VTAB X1:HTAB Y1:PRINT" ":GOSUB 1150:B(X1,Y1)=0:GOSUB 29500:X1=X2:Y1=Y2

136 IF A$="T" THEN 10000


160 IF A$="R" THEN 6000
170 IF A$="S" THEN 15000
180 IF A$="L" THEN 15100
182 IF A$="C" THEN 15500
184 IF A$="X" THEN 15800

186 IF A$="E" AND C6>0 THEN 6300

191 IF A$=CHR$(6) THEN 33000
192 IF A$=CHR$(15) THEN 30000
193 IF A$=CHR$(26) THEN C6=0:NORMAL:VTAB 21:HTAB 15:PRINT"        ":GOTO 43000

194 IF A$=CHR$(9) THEN 55000

196 IF A$=CHR$(1) THEN MA=0:NORMAL:VTAB 23:HTAB 45:PRINT"RND"
197 IF A$=CHR$(20) THEN 34000

198 IF A$=CHR$(19) THEN 54000

199 IF A$=CHR$(18) THEN 41000


200 GOTO 60

300 X4=X9:Y4=Y9:I1=1:S1=0:H2=0:RU=1
301 VTAB 20:HTAB 44:PRINT"       ":VTAB 21:HTAB 74:PRINT"    0":VTAB 22:HTAB 74:PRINT"    0":INVERSE:VTAB 23:HTAB 66:PRINT"             ":NORMAL

302 INVERSE:VTAB 23:HTAB 1:PRINT"              RUNNING                       ":NORMAL

307 GOSUB 26000

308 IF G1>0 THEN GOSUB 40000

310 IF B(X9,Y9)=1 THEN B(X9,Y9)=0:VTAB X9:HTAB Y9:PRINT"M":BB=BB-1:GOSUB 1200

311 REM 

312 IF B(V8,V9)=1 AND G1>0 THEN B(V8,V9)=0:VTAB V8:HTAB V9:PRINT"T":BB=BB-1:GOSUB 1200 

313 REM  


314 IF B(X9,Y9+1)=1 AND B(X9+1,Y9+1)=1 AND B(X9+1,Y9)=1 AND B(X9+1,Y9-1)=1 AND B(X9,Y9-1)=1 AND B(X9-1,Y9-1)=1 AND B(X9-1,Y9)=1 AND B(X9-1,Y9+1)=1 THEN INVERSE:VTAB 20:HTAB 44:PRINT"NO EXIT":NORMAL:GOTO 60


315 VTAB X4:HTAB Y4:PRINT"M"
320 X5=X4:Y5=Y4
325 FOR I8=1 TO 8
330 IF M(I8)=4 AND (B(X4+1,Y4-1)=0 OR B(X4+1,Y4-1)=3) THEN XX=X4+1:YY=Y4-1:Q=5:F1=1:GOTO 530
340 IF M(I8)=3 AND (B(X4+1,Y4)=0 OR B(X4+1,Y4)=3) THEN XX=X4+1:YY=Y4:Q=4:F1=2:GOTO 530
350 IF M(I8)=2 AND (B(X4+1,Y4+1)=0 OR B(X4+1,Y4+1)=3) THEN XX=X4+1:YY=Y4+1:Q=6:F1=3:GOTO 530
360 IF M(I8)=1 AND (B(X4,Y4+1)=0 OR B(X4,Y4+1)=3) THEN XX=X4:YY=Y4+1:Q=3:F1=4:GOTO 530
370 IF M(I8)=8 AND (B(X4-1,Y4+1)=0 OR B(X4-1,Y4+1)=3) THEN XX=X4-1:YY=Y4+1:Q=7:F1=5:GOTO 530
380 IF M(I8)=7 AND (B(X4-1,Y4)=0 OR B(X4-1,Y4)=3) THEN XX=X4-1:YY=Y4:Q=2:F1=6:GOTO 530
390 IF M(I8)=6 AND (B(X4-1,Y4-1)=0 OR B(X4-1,Y4-1)=3) THEN XX=X4-1:YY=Y4-1:Q=8:F1=7:GOTO 530
395 IF M(I8)=5 AND (B(X4,Y4-1)=0 OR B(X4,Y4-1)=3) THEN XX=X4:YY=Y4-1:Q=1:F1=8:GOTO 530
398 NEXT I8
400 I1=I1-1:IF I1<1 THEN I1=1
410 A7=C(I1):C(I1)=9999:H2=H2+1:N1=22:N2=78:GOSUB 900
420 IF A7=1 THEN YY=Y4+1:XX=X4
430 IF A7=4 THEN XX=X4-1:YY=Y4
440 IF A7=3 THEN YY=Y4-1:XX=X4
450 IF A7=2 THEN XX=X4+1:YY=Y4
460 IF A7=5 THEN XX=X4-1:YY=Y4+1
470 IF A7=6 THEN XX=X4-1:YY=Y4-1
480 IF A7=7 THEN XX=X4+1:YY=Y4-1
490 IF A7=8 THEN XX=X4+1:YY=Y4+1
500 GOTO 550
530 IF B(XX,YY)=2 THEN XX=X4:YY=Y4:ON F1 GOTO 340,350,360,370,380,390,395,400
540 C(I1)=Q:I1=I1+1

550 VTAB X4:HTAB Y4:PRINT" "
552 IF B(XX,YY)=3 THEN 556
554 B(XX,YY)=2 


556 IF G1>0 AND XX=V8 AND YY=V9 THEN VTAB X5:HTAB Y5:PRINT" ":GOSUB 27000:S1=0:H2=0:GOTO 650
560 IF XX>19 OR XX<1 OR YY>79 OR YY<1 THEN VTAB X5:HTAB Y5:PRINT" ":GOSUB 27000:S1=0:H2=0:GOTO 650


570 X4=XX:Y4=YY:VTAB X4:HTAB Y4:PRINT"M":VTAB X5:HTAB Y5:PRINT" "
572 IF B(X5,Y5)=3 THEN VTAB X5:HTAB Y5:PRINT"$":B(X5,Y5)=1:BB=BB+1:GOSUB 1200:I9=I9-1:GOSUB 29500:GOSUB 29800:GOSUB 26042:CI=1:GOSUB 6000:X9=X4:Y9=Y4:R1=0:I1=1


575 IF XX=X9 AND YY=Y9 THEN R1=R1+1:GOSUB 28000
577 IF R1>8 THEN R1=0:NO=1:INVERSE:VTAB 20:HTAB 44:PRINT"NO EXIT":NORMAL:GOTO 650


580 S1=S1+1:N1=21:N2=78
590 IF S1>9 THEN N2=N2-1
600 IF S1>99 THEN N2=N2-1
610 IF S1>999 THEN N2=N2-1
612 IF S1>9999 THEN N2=N2-1
620 VTAB N1:HTAB N2: PRINT S1
640 GOTO 315

650 INVERSE:VTAB 23:HTAB 1:PRINT"              WAITING                       ":NORMAL
660 FOR I=0 TO 20
670 FOR J=0 TO 80
680 IF (B(I,J)<>1 AND B(I,J)<>3) THEN B(I,J)=0
690 NEXT J
700 NEXT I
705 INVERSE:VTAB 23:HTAB 15:PRINT"        ":NORMAL
710 GOTO 60
 

900 IF H2>9 THEN N2=N2-1
910 IF H2>99 THEN N2=N2-1
920 IF H2>999 THEN N2=N2-1
922 IF H2>9999 THEN N2=N2-1
930 VTAB N1:HTAB N2: PRINT H2
940 RETURN

1000 IF X2<1 THEN X2=19
1010 IF X2>19 THEN X2=1
1020 IF Y2<1 THEN Y2=79
1030 IF Y2>79 THEN Y2=1

1040 RETURN

1100 IF B(X1,Y1)=0 OR B(X1,Y1)=3 THEN BB=BB+1
1110 RETURN 

1150 IF B(X1,Y1)=1 THEN BB=BB-1
1160 RETURN

1200 IF BB<0 THEN BB=0
1210 IF BB<10 AND BB>-1 THEN NN1=78
1220 IF BB<100 AND BB>9 THEN NN1=77
1230 IF BB<1000 AND BB>99 THEN NN1=76
1240 IF BB<10000 AND BB>999 THEN NN1=75
1242 IF BB<100000 AND BB>9999 THEN NN1=74
1250 VTAB 20:HTAB 74:PRINT"     "
1260 VTAB 20:HTAB NN1:PRINT BB
1270 RETURN


6000 IF MA=1 AND CI=1 THEN CI=0:RETURN

6001 IF MA=1 THEN 300


6002 T$="":VTAB 21:HTAB 15:PRINT"E - ECHO"
6005 C6=C6+1

6030 INVERSE:VTAB 23:HTAB 1:PRINT"              WAITING                       ":NORMAL

6040 FOR I=1 TO RDS
6050 SF=INT(RND(999)*8+1):SG=INT(RND(999)*8+1)
6060 TG=M(SF):M(SF)=M(SG):M(SG)=TG
6070 NEXT I

6080 FOR I=1 TO 8
6090 S(I)=M(I)
6095 NEXT I


6100 GOSUB 46100

6110 IF CI=1 THEN CI=0:RETURN

6298 GOTO 300

6300 IF MA=1 THEN 300

6301 T$=""




6302 FOR I=1 TO 8
6310 M(I)=S(I)
6320 NEXT I

6322 GOSUB 46100



6330 GOTO 300

9000 HOME:PRINT CHR$(4);"CATALOG"+",D1,S6":END



10000 TA=1:BT=BB:SS=0:X2=10:Y2=42:CC=CC+1

10001 REM 

10002 IF LL=1 AND RU=0 THEN GOSUB 56000:GOTO 10006  

10004 IF RU=1 THEN RU=0:GOSUB 56000:GOTO 10006

10005 BB=0:TS=0:GOSUB 56000:GOSUB 15830:GOSUB 1200:GOSUB 29200

10006 VTAB X9:HTAB Y9:PRINT"M":INVERSE:VTAB X1:HTAB Y1:PRINT"$"
10008 VTAB 23:HTAB 1:PRINT"COMMAND :                                                                     ":VTAB 23:HTAB 50:PRINT"MOUSETRAP       ":VTAB 23:HTAB 11:GET A$:GOSUB 60000:VTAB 23:HTAB 11:PRINT A$:NORMAL

11000 REM 

11016 IF A$=CHR$(25) THEN X2=X1-1:Y2=Y1:GOSUB 1000:GOSUB 29000:GOSUB 29200:GOSUB 29300:X1=X2:Y1=Y2
11017 IF A$=CHR$(7) THEN X2=X1:Y2=Y1-1:GOSUB 1000:GOSUB 29000:GOSUB 29200:GOSUB 29300:X1=X2:Y1=Y2
11018 IF A$=CHR$(8) THEN X2=X1:Y2=Y1+1:GOSUB 1000:GOSUB 29000:GOSUB 29200:GOSUB 29300:X1=X2:Y1=Y2
11019 IF A$=CHR$(2) THEN X2=X1+1:Y2=Y1:GOSUB 1000:GOSUB 29000:GOSUB 29200:GOSUB 29300:X1=X2:Y1=Y2

11020 IF A$="I" THEN X2=X1-1:Y2=Y1:GOSUB 1000:GOSUB 29400:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11021 IF A$="J" THEN X2=X1:Y2=Y1-1:GOSUB 1000:GOSUB 29400:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11022 IF A$="K" THEN X2=X1:Y2=Y1+1:GOSUB 1000:GOSUB 29400:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11023 IF A$="M" THEN X2=X1+1:Y2=Y1:GOSUB 1000:GOSUB 29400:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2

11024 IF A$="Y" THEN X2=X1-1:Y2=Y1:GOSUB 1000:GOSUB 29000:GOSUB 11900:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11025 IF A$="G" THEN X2=X1:Y2=Y1-1:GOSUB 1000:GOSUB 29000:GOSUB 11900:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11026 IF A$="H" THEN X2=X1:Y2=Y1+1:GOSUB 1000:GOSUB 29000:GOSUB 11900:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2
11027 IF A$="B" THEN X2=X1+1:Y2=Y1:GOSUB 1000:GOSUB 29000:GOSUB 11900:GOSUB 29200:GOSUB 29300:GOSUB 57000:X1=X2:Y1=Y2

11028 IF I9>1001 THEN 11070
11030 IF A$="A" THEN XV=X1:YV=Y1:FOR I=AM TO AM+500:GOSUB 59000:GOSUB 29400:GOSUB 29200:GOSUB 29300:GOSUB 57000:NEXT I:X1=XV:Y1=YV:AM=AM+500


11070 IF A$=CHR$(43) THEN TA=0:GOSUB 12500:GOSUB 29500:INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60


11100 GOTO 10006


11900 FOR L=1 TO I9-1
11910 IF 100*X1+Y1=C(L) THEN 12000
11920 NEXT L

11930 RETURN
 


12000 FOR K=L TO I9-1
12010 C(K)=C(K+1)
12020 NEXT K

12030 I9=I9-1

12040 RETURN


12500 IF I9=1 THEN RETURN
12502 FOR N=1 TO I9-1
12510 XN=INT(C(N)/100):YN=C(N)-100*XN
12520 B(XN,YN)=3
12530 NEXT N

12560 RETURN 



 


15000 INVERSE:VTAB 23:HTAB 1:PRINT"                                                 ":VTAB 23:HTAB 1:INPUT"FILENAME : ";F$:NORMAL

15005 INVERSE:VTAB 23:HTAB 50:PRINT"SAVING":NORMAL
15007 IF F$=CHR$(43) THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60

15009 IF LEN(F$) > 24 THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 15000

15010 REM 

15012 PRINT CHR$(4);"OPEN";F$
15020 PRINT CHR$(4);"WRITE";F$ 
15030 FOR I=1 TO 19
15040 FOR J=1 TO 79

15042 IF B(I,J)=3 THEN PRINT 0:GOTO 15060

15050 PRINT B(I,J)
15060 NEXT J
15070 NEXT I
15080 PRINT CHR$(4);"CLOSE";F$

15081 PRINT CHR$(4);"OPEN";F$+".INDEX"
15082 PRINT CHR$(4);"WRITE";F$+".INDEX"
15083 PRINT X1:PRINT Y1:PRINT X9:PRINT Y9:PRINT V8:PRINT V9:PRINT G1:PRINT M(1):PRINT M(2):PRINT M(3):PRINT M(4):PRINT M(5):PRINT M(6):PRINT M(7):PRINT M(8):PRINT T$:PRINT MA
15084 PRINT CHR$(4);"CLOSE";F$+".INDEX"

15086 PRINT CHR$(4);"OPEN";F$+".BITMAP"
15088 PRINT CHR$(4);"WRITE";F$+".BITMAP" 
15090 FOR I=1 TO 19
15092 FOR J=1 TO 79
15093 PRINT B(I,J);
15094 NEXT J
15095 PRINT
15096 NEXT I
15097 PRINT CHR$(4);"CLOSE";F$+".BITMAP"


15098 INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL
15099 GOTO 60


15100 INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":VTAB 23:HTAB 1:INPUT"FILENAME : ";F$:NORMAL
15105 INVERSE:VTAB 23:HTAB 50:PRINT"LOADING":NORMAL
15106 IF F$=CHR$(43) THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60

15108 REM 

15110 REM 
15120 PRINT CHR$(4);"READ";F$ 
15130 FOR I=1 TO 19
15140 FOR J=1 TO 79
15150 INPUT B(I,J)
15160 NEXT J
15170 NEXT I
15180 PRINT CHR$(4);"CLOSE";F$
15181 REM 
15182 PRINT CHR$(4);"READ";F$+".INDEX"
15183 INPUT X1:INPUT Y1:INPUT X9:INPUT Y9:INPUT V8:INPUT V9:INPUT G1:INPUT M(1):INPUT M(2):INPUT M(3):INPUT M(4):INPUT M(5):INPUT M(6):INPUT M(7):INPUT M(8):INPUT T$:INPUT MA
15184 PRINT CHR$(4);"CLOSE";F$+".INDEX"
15185 IF M(5)=0 THEN FOR I=1 TO 8:M(I)=I:NEXT I:T$="R  DR  D  DL  L  UL  U  UR "

15187 REM 
15188 REM GOSUB 55000
15189 REM 



15193 IF G1>0 THEN INVERSE:VTAB 23:HTAB 50:PRINT"TARGET MODE     ":NORMAL
15194 IF G1=0 THEN RN=1:GOSUB 41000


15196 NORMAL:VTAB 20:HTAB 44:PRINT"                "

15197 IF MA=1 THEN C6=0:NORMAL:VTAB 21:HTAB 15:PRINT"        "

15198 IF MA=0 THEN C6=C6+1:FOR I=1 TO 8:S(I)=M(I):NEXT I:VTAB 21:HTAB 15:PRINT"E - ECHO"

15199 LL=1:RU=0:GOSUB 1200:GOTO 15820

15200 BB=0:VTAB 20:HTAB 74:PRINT"     ":VTAB 21:HTAB 74:PRINT"    0":VTAB 22:HTAB 74:PRINT"    0" 
15202 FOR I=1 TO 19
15210 FOR J=1 TO 79
15220 IF B(I,J)=1 THEN VTAB I:HTAB J:PRINT"$"
15222 IF B(I,J)=3 THEN INVERSE:VTAB I:HTAB J:PRINT"T":NORMAL
15224 IF B(I,J)=0 THEN VTAB I:HTAB J:PRINT" "
15230 NEXT J
15240 NEXT I

15242 GOSUB 29500

15250 RETURN

15500 NORMAL:VTAB 20:HTAB 44:PRINT"                      ":INVERSE:VTAB 23:HTAB 66:PRINT"             ":NORMAL

15502 FOR I=1 TO 19
15510 FOR J=1 TO 79
15520 VTAB I:HTAB J:PRINT" "
15530 NEXT J
15540 NEXT I

15542 FOR I=0 TO 20
15543 FOR J=0 TO 80
15544 B(I,J)=0
15545 NEXT J
15546 NEXT I

15548 BB=0
15549 VTAB 20:HTAB 74:PRINT"    0":VTAB 21:HTAB 74:PRINT"    0":VTAB 22:HTAB 74:PRINT"    0"

15550 FOR I=0 TO 1600:C(I)=0:NEXT I

15560 GOTO 60


15800 HOME
15802 PRINT CHR$(4);"CATALOG"+",D2,S6"
15810 PRINT:PRINT"<PRESS ANY KEY TO BE CONTINUE>":NORMAL:GET CT$:PRINT CT$
15820 HOME:BB=0:TS=0
15830 FOR I=1 TO 19
15840 FOR J=1 TO 79
15850 IF B(I,J)=1 THEN VTAB I:HTAB J:PRINT"$":BB=BB+1
15852 IF B(I,J)=3 THEN INVERSE:VTAB I:HTAB J:PRINT"T":NORMAL:TS=TS+1
15860 NEXT J
15870 NEXT I

15871 IF D2=1 THEN D2=0:RETURN

15872 GOSUB 29550

15880 IF TA=1 THEN RETURN

15990 GOTO 52


22200 INVERSE:VTAB 23:HTAB 50:PRINT"ERROR OCCURED":NORMAL:FOR I=1 TO 50000:NEXT I:GOTO 60
 

26000 NORMAL
26002 FOR I=1 TO 19
26010 FOR J=1 TO 79
26020 IF (B(I,J)<>1 AND B(I,J)<>3) THEN VTAB I:HTAB J:PRINT" "
26030 NEXT J
26040 NEXT I

26042 FOR I=0 TO 1600:C(I)=0:NEXT I

26050 RETURN

27000 S1=S1+1:N1=21:N2=78
27010 IF S1>9 THEN N2=N2-1
27020 IF S1>99 THEN N2=N2-1
27030 IF S1>999 THEN N2=N2-1
27040 VTAB N1:HTAB N2: PRINT S1
27050 RETURN

28000 IF R1>8 THEN RETURN
28010 INVERSE:VTAB 23:HTAB 66:PRINT"ROOT PASS : ";R1:NORMAL
28020 RETURN



29000 IF (X1=X9 AND Y1=Y9) OR (G1>0 AND X1=V8 AND Y1=V9) THEN 29040

29010 IF B(X1,Y1)=1 THEN NORMAL:VTAB X1:HTAB Y1:PRINT"$"
29020 IF B(X1,Y1)=0 THEN NORMAL:VTAB X1:HTAB Y1:PRINT" "
29022 IF B(X1,Y1)=3 AND TA=0 THEN INVERSE:VTAB X1:HTAB Y1:PRINT"T":NORMAL
29030 IF (X2=X9 AND Y2=Y9) OR (G1>0 AND X2=V8 AND Y2=V9) THEN 29050
29040 INVERSE:VTAB X2:HTAB Y2:PRINT"$":NORMAL
 

29050 RETURN


29200 FOR A=1 TO I9-1
29202 IF C(A)>100 AND C(A)<> 9999 THEN INVERSE:VTAB INT(C(A)/100):HTAB C(A)-100*INT(C(A)/100):PRINT"T":NORMAL
29204 NEXT A

29250 RETURN

 
29300 NORMAL:VTAB 20:HTAB 53:PRINT"             "                                                                         
29310 INVERSE:VTAB 20:HTAB 53:PRINT"TRAP":NORMAL:VTAB 20:HTAB 58:PRINT I9-1:TR=1
29320 NORMAL

29330 RETURN


29400 FOR I=1 TO I9
29410 IF C(I)=100*X1+Y1 OR ((X1=X9) AND (Y1=Y9)) OR ((G1>0) AND (X1=V8) AND (Y1=V9)) THEN 29430
29422 NEXT I
29424 C(I9)=100*X1+Y1
29426 I9=I9+1
29430 RETURN 


29500 TS=0:BB=0

29502 FOR I=1 TO 19
29510 FOR J=1 TO 79
29520 IF B(I,J)=3 THEN TS=TS+1
29522 IF B(I,J)=1 THEN BB=BB+1
29530 NEXT J
29540 NEXT I

29550 INVERSE:VTAB 20:HTAB 53:PRINT"TRAP":NORMAL:VTAB 20:HTAB 58:PRINT"    ":VTAB 20:HTAB 58:PRINT TS
29556 GOSUB 1200

29560 RETURN

29800 FOR I=1 TO 19
29810 FOR J=1 TO 79
29820 IF B(I,J)=2 THEN B(I,J)=0
29830 NEXT J
29840 NEXT I

29860 RETURN



30000 O1=O1+1
30004 X8=10:Y8=40
30006 IF O1>1 THEN X8=X9:Y8=Y9
30007 IF LL=1 THEN X8=X9:Y8=Y9
30008 INVERSE:VTAB 23:HTAB 1:PRINT"COMMAND :                                        CHANGE ORIGINAL POSITION      ":NORMAL
30010 INVERSE:VTAB 23:HTAB 11:GET A$:GOSUB 60000:VTAB 23:HTAB 11:PRINT A$:NORMAL


30050 IF A$=CHR$(25) THEN X9=X8-1:Y9=Y8:GOSUB 32000:GOSUB 31000:X8=X9:Y8=Y9
30060 IF A$=CHR$(7) THEN X9=X8:Y9=Y8-1:GOSUB 32000:GOSUB 31000:X8=X9:Y8=Y9
30070 IF A$=CHR$(8) THEN X9=X8:Y9=Y8+1:GOSUB 32000:GOSUB 31000:X8=X9:Y8=Y9
30080 IF A$=CHR$(2) THEN X9=X8+1:Y9=Y8:GOSUB 32000:GOSUB 31000:X8=X9:Y8=Y9

30082 IF A$=CHR$(15) THEN 36000

30090 GOTO  30010




31000 IF B(X8,Y8)=1 THEN NORMAL:VTAB X8:HTAB Y8:PRINT"$"
31010 IF B(X8,Y8)=0 THEN NORMAL:VTAB X8:HTAB Y8:PRINT" "
31011 IF B(X8,Y8)=3 THEN INVERSE:VTAB X8:HTAB Y8:PRINT"T":NORMAL

31012 IF X8=V8 AND Y8=V9 AND G1>0 THEN NORMAL:VTAB V8:HTAB V9:PRINT"T"
31014 IF X8=X1 AND Y8=Y1 THEN INVERSE:VTAB X1:HTAB Y1:PRINT"$":NORMAL


31020 NORMAL:VTAB X9:HTAB Y9:PRINT"M"

31050 RETURN

32000 IF X9<1 THEN X9=19
32010 IF X9>19 THEN X9=1
32020 IF Y9<1 THEN Y9=79
32030 IF Y9>79 THEN Y9=1

32040 RETURN

33000 INVERSE:VTAB 23:HTAB 1:PRINT"                                                                              ":VTAB 23:HTAB 50:PRINT"MAZE FIXING":VTAB 23:HTAB 1:INPUT"FILENAME : ";F$:NORMAL

33002 IF F$=CHR$(43) THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60

33010 A9=10:B9=40:C8=10:D9=38:E1=0:FF=1

33012 N(1)=1:N(2)=2:N(3)=3:N(4)=4:N(5)=5:N(6)=6:N(7)=7:N(8)=8

33014 H$="R  DR  D  DL  L  UL  U  UR "

33016 REM 

33081 REM 
33082 PRINT CHR$(4);"READ";F$+".INDEX"
33083 INPUT T1:INPUT T2
33084 PRINT CHR$(4);"CLOSE";F$+".INDEX"


33181 PRINT CHR$(4);"OPEN";F$+".INDEX"
33182 PRINT CHR$(4);"WRITE";F$+".INDEX"
33183 PRINT T1:PRINT T2:PRINT A9:PRINT B9:PRINT C8:PRINT D9:PRINT E1:PRINT N(1):PRINT N(2):PRINT N(3):PRINT N(4):PRINT N(5):PRINT N(6):PRINT N(7):PRINT N(8):PRINT H$:PRINT FF
33184 PRINT CHR$(4);"CLOSE";F$+".INDEX"



33281 PRINT CHR$(4);"OPEN";F$+".TRAP"
33282 PRINT CHR$(4);"WRITE";F$+".TRAP"

33283 FOR I=1 TO 19
33285 FOR J=1 TO 79
33287 PRINT 0
33289 NEXT J
33290 NEXT I 

33294 PRINT CHR$(4);"CLOSE";F$+".TRAP"


33381 PRINT CHR$(4);"OPEN";F$+".TRAP"+".INDEX"
33382 PRINT CHR$(4);"WRITE";F$+".TRAP"+".INDEX"
33383 PRINT 1
33384 PRINT CHR$(4);"CLOSE";F$+".TRAP"+".INDEX"


33886 INVERSE:VTAB 23:HTAB 50:PRINT"           ":VTAB 23:HTAB 12:PRINT"                              ":NORMAL

33890 GOTO 60


34000 G1=G1+1
34002 G8=10:G9=38

34003 IF G1>1 OR LL=1 THEN G8=V8:G9=V9:NORMAL:VTAB G8:HTAB G9:PRINT"T":GOTO 34007


34004 NORMAL:VTAB G8:HTAB G9:PRINT"T"


34007 INVERSE:VTAB 23:HTAB 1:PRINT"COMMAND :                                        CHANGE TARGET POSITION        ":NORMAL
34010 INVERSE:VTAB 23:HTAB 11:GET A$:GOSUB 60000:VTAB 23:HTAB 11:PRINT A$:NORMAL

34050 IF A$=CHR$(25) THEN V8=G8-1:V9=G9:GOSUB 37000:GOSUB 35000:G8=V8:G9=V9
34060 IF A$=CHR$(7) THEN V8=G8:V9=G9-1:GOSUB 37000:GOSUB 35000:G8=V8:G9=V9
34070 IF A$=CHR$(8) THEN V8=G8:V9=G9+1:GOSUB 37000:GOSUB 35000:G8=V8:G9=V9
34080 IF A$=CHR$(2) THEN V8=G8+1:V9=G9:GOSUB 37000:GOSUB 35000:G8=V8:G9=V9

34082 IF A$=CHR$(20) THEN 38000


34090 GOTO  34010


35000 IF B(G8,G9)=1 THEN NORMAL:VTAB G8:HTAB G9:PRINT"$"
35010 IF B(G8,G9)=0 THEN NORMAL:VTAB G8:HTAB G9:PRINT" "
35011 IF B(G8,G9)=3 THEN INVERSE:VTAB G8:HTAB G9:PRINT"T":NORMAL

35012 IF G8=X9 AND G9=Y9 THEN NORMAL:VTAB X9:HTAB Y9:PRINT"M"
35014 IF G8=X1 AND G9=Y1 THEN INVERSE:VTAB X1:HTAB Y1:PRINT"$":NORMAL


35020 NORMAL:VTAB V8:HTAB V9:PRINT"T"

35050 RETURN


36000 IF B(X9,Y9)=1 THEN INVERSE:VTAB 23:HTAB 50:PRINT"STAND ON THE DOLLAR SIGN":GOTO 30010
36001 IF B(X9,Y9)=3 THEN INVERSE:VTAB 23:HTAB 50:PRINT"STAND ON THE TRAP            ":GOTO 30010
36002 IF V8=10 AND V9=38 THEN 36010
36004 IF X9=V8 AND Y9=V9 THEN INVERSE:VTAB 23:HTAB 50:PRINT"M STAND ON T            ":GOTO 30010


36010 INVERSE:VTAB 23:HTAB 50:PRINT"                        ":NORMAL:GOTO 60

37000 IF V8<1 THEN V8=19
37010 IF V8>19 THEN V8=1
37020 IF V9<1 THEN V9=79
37030 IF V9>79 THEN V9=1

37040 RETURN


38000 IF B(V8,V9)=1 THEN INVERSE:VTAB 23:HTAB 50:PRINT"STAND ON THE DOLLAR SIGN":GOTO 34010
38001 IF B(V8,V9)=3 THEN INVERSE:VTAB 23:HTAB 50:PRINT"STAND ON THE TRAP            ":GOTO 34010
38002 IF X9=V8 AND Y9=V9 THEN INVERSE:VTAB 23:HTAB 50:PRINT"T STAND ON M            ":GOTO 34010

38010 INVERSE:VTAB 23:HTAB 50:PRINT"                        ":NORMAL:GOTO 60

40000 NORMAL:VTAB V8:HTAB V9:PRINT"T"

40002 FOR I=0 TO 80

40010 B(0,I)=1:B(20,I)=1
40020 NEXT I

40030 FOR J=0 TO 20
40040 B(J,0)=1:B(J,80)=1
40050 NEXT J


40090 RETURN

41000 IF RN=1 THEN 41006

41001 IF B(V8,V9)=1 THEN B(V8,V9)=0:BB=BB-1:GOSUB 1200 

41002 NORMAL:VTAB V8:HTAB V9:PRINT" ":G1=0:V8=10:V9=38

41006 INVERSE:VTAB 23:HTAB 50:PRINT"COMMON MODE     ":NORMAL

41008 FOR I=0 TO 80


41010 B(0,I)=0:B(20,I)=0
41020 NEXT I

41030 FOR J=0 TO 20
41040 B(J,0)=0:B(J,80)=0
41050 NEXT J
41060 IF RN=1 THEN RN=0:RETURN

41090 GOTO 64
 
 

43000 IN=1:PO=0:CH=1:MA=1:T$=""
43002 CU$(8)="UR ":CU$(1)="R ":CU$(2)="DR ":CU$(3)="D ":CU$(4)="DL ":CU$(5)="L ":CU$(6)="UL ":CU$(7)="U "


43004 INVERSE:VTAB 23:HTAB 1:PRINT"RULES :                                          ":NORMAL

43006 VTAB 23:HTAB 15:PRINT CU$(IN)

43008 INVERSE:VTAB 23:HTAB 9:GET A$:GOSUB 60000:VTAB 23:HTAB 9:PRINT A$:NORMAL



43010 IF A$="J" THEN IN=IN-1:GOTO 43100
43020 IF A$="K" THEN IN=IN+1:GOTO 43100
43022 IF A$="M" AND PO<7 THEN T$=T$+CU$(IN)+" ":PO=PO+1:M(CH)=IN:CH=CH+1:IN=1:GOTO 43150
43023 IF A$="M" AND PO=7 THEN T$=T$+CU$(IN)+" ":GOTO 44000

43030 IF A$=CHR$(43) THEN 46000

43050 GOTO 43008

43100 INVERSE:VTAB 23:HTAB 50:PRINT"             ":NORMAL

43102 IF IN>8 THEN IN=1
43110 IF IN<1 THEN IN=8


43150 VTAB 23:HTAB 15+PO*4:PRINT CU$(IN)

43160 GOTO 43008


44000 REM 

44002 M(CH)=IN

44010 REM 

44130 FOR I=1 TO CH-1
44131 FOR J=2 TO CH
44132 IF I=J THEN 44134
44133 IF M(I)=M(J) THEN 45000
44134 NEXT J
44136 NEXT I
 

44140 REM 

44150 INVERSE:VTAB 23:HTAB 1:PRINT"                                                  "

44160 NORMAL:VTAB 23:HTAB 45:PRINT"SET":GOTO 60


45000 INVERSE:VTAB 23:HTAB 50:PRINT"RULE REPEATED":NORMAL
45010 GOTO 43000


46000 T$="R  DR  D  DL  L  UL  U  UR "


46002 FOR I=1 TO 8
46010 M(I)=I
46020 NEXT I

46030 GOTO 44150



46100 FOR I=1 TO 8
46102 IF M(I)=1 THEN P$(I)="R "
46104 NEXT I
46110 FOR I=1 TO 8
46112 IF M(I)=2 THEN P$(I)="DR "
46114 NEXT I
46120 FOR I=1 TO 8
46122 IF M(I)=3 THEN P$(I)="D "
46124 NEXT I
46130 FOR I=1 TO 8
46132 IF M(I)=4 THEN P$(I)="DL "
46134 NEXT I
46140 FOR I=1 TO 8
46142 IF M(I)=5 THEN P$(I)="L "
46144 NEXT I
46150 FOR I=1 TO 8
46152 IF M(I)=6 THEN P$(I)="UL "
46154 NEXT I
46160 FOR I=1 TO 8
46162 IF M(I)=7 THEN P$(I)="U "
46164 NEXT I
46170 FOR I=1 TO 8
46172 IF M(I)=8 THEN P$(I)="UR "
46174 NEXT I

46200 FOR I=1 TO 8
46202 T$=T$+P$(I)+" "
46206 NEXT I


46300 RETURN


50000 IF B(X1,Y1)=3 THEN C(I9)=0:I9=I9-1:NORMAL:VTAB 20:HTAB 58:PRINT"        ":VTAB 20:HTAB 58:PRINT I9
50010 RETURN

51000 IF B(X1,Y1)=1 THEN BB=BB-1:GOSUB 1200
51010 RETURN
 

 

54000 INVERSE:VTAB 23:HTAB 1:PRINT"                                                 ":VTAB 23:HTAB 1:INPUT"FILENAME : ";F$:NORMAL

54005 INVERSE:VTAB 23:HTAB 50:PRINT"SAVING":NORMAL
54007 IF F$=CHR$(43) THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60

54009 IF LEN(F$) > 24 THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 54000


54010 PRINT CHR$(4);"OPEN";F$+".TRAP"

54020 PRINT CHR$(4);"WRITE";F$+".TRAP" 
54030 FOR I=1 TO 19
54040 FOR J=1 TO 79
54050 PRINT B(I,J)
54060 NEXT J
54070 NEXT I
54080 PRINT CHR$(4);"CLOSE";F$+".TRAP"


54100 PRINT CHR$(4);"OPEN";F$+".TRAP"+".INDEX"
54120 PRINT CHR$(4);"WRITE";F$+".TRAP"+".INDEX" 
54150 PRINT I9 
54180 PRINT CHR$(4);"CLOSE";F$+".TRAP"+".INDEX"

54190 GOTO 60



55000 INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":VTAB 23:HTAB 1:INPUT"FILENAME : ";F$:NORMAL
55005 INVERSE:VTAB 23:HTAB 50:PRINT"LOADING":NORMAL
55006 IF F$=CHR$(43) THEN INVERSE:VTAB 23:HTAB 12:PRINT"                                                                    ":NORMAL:GOTO 60

55020 PRINT CHR$(4);"READ";F$+".TRAP" 
55030 FOR I=1 TO 19
55040 FOR J=1 TO 79

55042 IF B(I,J)=3 THEN B(I,J)=0

55050 INPUT B(0,0)
55052 IF B(0,0)=3 THEN B(I,J)=3
55060 NEXT J
55070 NEXT I
55080 PRINT CHR$(4);"CLOSE";F$+".TRAP"


55100 REM
55120 PRINT CHR$(4);"READ";F$+".TRAP"+".INDEX" 
55150 INPUT I9 
55180 PRINT CHR$(4);"CLOSE";F$+".TRAP"+".INDEX"

55190 GOTO 15193


56000 I9=1

56002 FOR I=1 TO 19
56010 FOR J=1 TO 79
56020 IF B(I,J)=3 THEN C(I9)=100*I+J:B(I,J)=0:I9=I9+1
56030 NEXT J
56040 NEXT I

56060 RETURN


57000 GOSUB 58000
57002 BB=BT-SS:GOSUB 1200
57020 RETURN


58000 SS=0
58002 FOR I=1 TO I9-1
58010 IF B(INT(C(I)/100),C(I)-100*INT(C(I)/100))=1 THEN SS=SS+1
58020 NEXT I

58060 RETURN

59000 RQ=RDS
59006 FOR L=1 TO RQ
59010 TE=RND(RQ)
59020 NEXT L

59040 RQ=TE

59060 X1=INT(RND(RQ)*19+1):Y1=INT(RND(RQ)*79+1)

59090 RETURN



60000 IF A$=CHR$(10) OR A$=CHR$(13) OR A$=CHR$(22) OR A$=CHR$(12) OR A$=CHR$(11) OR A$=CHR$(17) OR A$=CHR$(23) OR A$=CHR$(21) OR A$=CHR$(27) THEN A$=" "
60002 RETURN
    